#include <iostream>
#include <map>
#include "global.hpp"

std::ostream &operator<<(std::ostream &os, const std::pair<int, std::string> &p)
{
    std::cout << p.first << " " << p.second<<std::endl;
    return os;
}

int main()
{
    // std::pair<int,std::string> p({1,"zhangsan"});;   // 对组
    std::pair<int, std::string> p = std::make_pair(1, "zhangsan"); // 官方推荐写法
    // std::cout<<p.first<<" "<<p.second<<std::endl;   // p.first第一个元素 p.second第二个元素

    // 红黑树
    std::map<int, std::string> m; // map里面的对象就是队组 对组对  按照队组的第一个元素排序(将对组排序)
    // std::multimap<int, std::string> m;  // multimap 没有[]重载 值不唯一 find找第一个  按值删除erase，相等的全删
    m.insert(p);
    m.insert({3, "wangwu"});
    m.insert(std::make_pair(2, "lisi")); // 插入：三种方法

    // auto ite = m.find(3);
    // m.erase(1);
    // std::cout<<ite->first<<" "<<ite->second<<std::endl;
    
    // m.insert({1,"zhaoliu"});  // map的值也是唯一的 
    m[2] = "zhaoliu";   // 存在就修改
    m[4] = "zhaoliu";    // 不存在就创建
    m.insert({1,"zhaoliu"});
    Print(m);
    // auto ite = m.find(1);
    // m.erase(1);
    return 0;
}
